//	控制BONN_SHUTTER的打开与关闭
//	快门由TTL电平控制
//	低电平打开  --> BIT_SHUTTER = 1
//	高电平关闭  --> BIT_SHUTTER = 0

#include "MephistoCAM.h"

int main( int argc, char *argv[] ){

	if( argc != 2 ){
		printf("\n# usage: %s state (1: open; 0: close)\n", argv[0]);
		return 0;
	}

	int opt = atoi(argv[1]);

	int fd_gpio = open("/dev/mem", O_RDWR | O_SYNC);
	uint *ptr1 = mmap(NULL, 10, PROT_READ | PROT_WRITE, MAP_SHARED, fd_gpio, ADDR_GPIO_OUT);
	uint *ptr2 = mmap(NULL, 10, PROT_READ | PROT_WRITE, MAP_SHARED, fd_gpio, ADDR_GPIO_IN);

	uint *gpio_reg 		= ptr1;		// 0x41200000
	uint *gpio_in_reg	= ptr2;		// 0x41210000

	if( opt == 0 ){
		bonn_shutter_close(gpio_reg, gpio_in_reg);	// 输出信号为5V
	} else if( opt == 1 ){
		bonn_shutter_open(gpio_reg, gpio_in_reg);	// 输出信号为0V
	}


	// 以下代码测试Thorlabs快门的控制
/*	if( opt == 0 ){*/
/*		bonn_shutter_open(gpio_reg, gpio_in_reg);	// 输出0V*/
/*		usleep(16000);*/

/*		bonn_shutter_close(gpio_reg, gpio_in_reg);	// 输出5V*/

/*		sleep(1);*/

/*		usleep(16000);*/
/*		bonn_shutter_open(gpio_reg, gpio_in_reg);	// 输出0V*/
/*	}*/
/*	*/
/*	if( opt == 1 ){*/
/*		bonn_shutter_close(gpio_reg, gpio_in_reg);	// 输出0V*/
/*		usleep(16000);*/

/*		bonn_shutter_open(gpio_reg, gpio_in_reg);	// 输出5V*/

/*		sleep(1);*/

/*		usleep(16000);*/
/*		bonn_shutter_close(gpio_reg, gpio_in_reg);	// 输出0V*/
/*	}*/

	munmap(ptr1,10);
	munmap(ptr2,10);

	return 0;
}
